The present invention generally relates to mechanisms and techniques for managing objects in a client-server computing system environment, and more particularly, to systems and techniques which allow for the creation and management of uniquely identified objects in such an environment.
The rise in popularity of computer networks such as the Internet has led software application developers to develop complex software applications which interact between different computer systems over the network. One example of such a software application is collaboration software which allows respective users of two or more computer systems to exchange information during a collaboration session. In a collaboration session, if a user on one computer system enters information or manipulates an image on that user""s computer display, the collaboration software conveys such information or image manipulations to recipient computer systems under control of other participants (i.e., other users) involved in the collaboration session. The recipient computer systems receive the information or image manipulations and attempt to duplicate or recreate the information or image manipulations on the computer display(s) of the recipient computer systems for viewing by the participants controlling such computer systems. In this manner, actions taken by one participant involved in the collaboration session can be witnessed by other participants in the collaboration session.
Collaboration software systems such as the example discussed above are often designed based on a client/server software design model. Software designer refer to the collaboration software that performs on the participant or user computer systems as client collaboration software, while other collaboration software that resides and performs within a collaboration adapter or collaboration server computer system to handle distribution of collaboration information between the respective user computer systems involved in the collaboration session is called server collaboration software.
Generally, client/server software systems such as collaboration systems support the exchange of information between a client and a server using some type of protocol or handshaking process which passes or transfers data structures between the client and server software components. Many implementations of client/server software systems use an object oriented software model or architecture which allows the client and server software to exchange data as a series of one or more objects. An object might, for instance, encapsulate information such as a size, position, direction of movement and so forth about a particular entity such as a graphic that is related to the collaboration session. Object oriented client/server software systems are not limited to collaborations systems, though collaboration systems serve as a suitable example for discussing the operations of object oriented client/server software systems.
By way of example, consider the operation of an object oriented client server collaboration software system that operates to provide a collaboration session between multiple participant users. Suppose one user on a user computer system involved in the collaboration session creates a graphic or image on the display of his or her user computer system. The client collaboration software on that user""s computer system will create a graphic object for that graphic and will assign an object identification to the graphic object. The graphic object might define, perhaps, the size, shape and position of the graphic on the display of the user computer system. After creation of the graphic object, the client collaboration software will then provide a copy of the graphic object to the server collaboration software that operates on the collaboration server computer system (also called a collaboration adapter). The server collaboration software will receive the graphic object and will place the graphic object in an object database with other objects possibly created by other client computer systems involved in the collaboration session. The server collaboration software periodically distributes the objects (e.g., the graphic object) in the object database to the client computer systems that are participating in the collaboration session so that the client collaboration software can display or otherwise operate on the set of objects related to the collaboration session.
In this manner, a client can create objects and provide the objects to the server and the server can distribute objects created by clients to other clients such that each client receives a copy of the objects related to the collaboration session. The server computer system operating the server collaboration software thus operates as a central repository for all objects created and identified by clients during the collaboration session. Should client collaboration software operating on another client computer system join a collaboration session already in progress, the server collaboration software can distribute the current set of objects related to the collaboration session to the client collaboration software on the client computer system such that the new participant user can immediately come up to speed and join in with the other participants in the collaboration session.
Conventional object oriented client/server software systems that provide object creation and management techniques suffer from a number of deficiencies. Most notably, conventional object oriented client/server software systems do not include a mechanism that ensures or guarantees uniqueness of shared objects in such systems.
By way of example, consider the object oriented client/server collaboration software system discussed above. In such a system, the client software (i.e. client collaboration software in this example) creates objects and assigns properties to the objects including the individual object identification for that object. The client software might generate the object identification for a particular object based on an algorithm that ensures that the object identification is unique within that client. However, once the client collaboration software forwards objects which it creates in this manner to the server collaboration software which maintains the objects in the object repository (e.g., an object database), there is no guarantee that the object identifications created by the client will be unique in relation to all other objects created by all other clients involved in collaboration session. It may be the case, for example, that a second client generates a second object containing the same object identification as the first object created by the first client. When the second client transfers the second object to the collaboration server for placement into the object database, the first and second objects will each contain the same object identification. This may cause the server collaboration software to be confused as to which object is to be obtained, manipulated or otherwise operate upon when a client refers to the object identification shared by two or more objects in the object database.
Conventional client/server object management techniques also provide insufficient mechanisms for a client to determine that a server accurately creates and manages the objects which a client provides to the server. For instance, in conventional collaboration systems, when the client collaboration software creates a number of objects, each containing a client object identification, and then provide the client objects to the server for distribution to other clients in a collaboration session, the client performs little if any verification processing to verify that the server collaboration software properly receives and manages the objects created by the client. This problem is associated in part to the aforementioned problem in which to objects might potentially share the same object identification in a conventional collaboration system. That is, if a client were to provide a set of objects to a server for distribution to other clients involved in a collaboration session, and one or more of the objects in the set had in object identification that was the same as an object identification of one or more other objects already in the object database on the server, in the server might become confused and might, for instance, overwrite or replace the first object with a second object having an object identification that is the same as the first object. As such, conventional collaboration systems do not provide the client with the ability to verify that the server has properly accounted for and managed all objects presented to the server from a client.
To this end, conventional object oriented client/server software systems do not provide a way to uniquely identify shared objects across all clients and servers which may have access to such shared objects, nor do such systems provide an integrated mechanism that authenticates or verifies that the server collaboration software has accounted for all objects presented to the server from the client collaboration software.
Conversely, the present invention overcomes such deficiencies and provides mechanisms and techniques which allow for the creation and management of objects that each contain a unique object identification. System of the invention guarantees that an object identification for an object will be unique across all clients and/or servers that may require access to the object. In this manner, clients can create objects that may always be differentiated from each other based on their object identifications. In the system of the invention, during the process of creating uniquely identify the objects, the system of the invention also provides a technique to ensure that the server properly create and manages the precise set of objects the client provides the server. In other words, during the process of creating a set of objects having a unique object identification across all clients in the server, the system of the invention also provides techniques which allow the client to guarantee that the server has properly accounted for and created (e.g., in the object database within the server) precisely the set of objects which the client initially provided to the server. In this manner, the client is assured that the server will distribute an exact corresponding set of uniquely identifies objects to other clients, for example, which may be participating in a collaboration session.
Once a uniquely identified set of objects (referred to herein as a global object specification) is created according to the techniques of the invention, the system of the invention also ensures that the unique objects are distributed to all client computer systemsthat require access to such objects. For example, in the collaboration software system environment, the system of the invention allows client collaboration software to create uniquely identified objects and to provide those objects to a collaboration server computer system for distribution to other clients in the collaboration session.
In this invention, the client computer systems are still responsible for creating objects. However, the server computer system is responsible for selecting a global object identification for an object instead of the client and the server is able to authenticate to the client the objects which the server manages on behalf of the client. By providing a centralized object identification and management mechanism within a server computer system, the invention guarantees that all object identifications are unique no matter which client created such objects and guarantees that the server properly manages (i.e., creates and distributes) all objects as instructed by the clients.
More specifically, the present invention provides method and apparatus embodiments to handle the creation and management of objects. According to one particular method embodiment, a method is provided in a client computer system for defining objects. The method comprises the steps of providing a local object specification to a server and receiving a global object specification from the server. The global object specification includes at least one global object definition having a unique global object identification. The method then generates a signal indicating whether the global object specification and the local object specification define common object definitions. This method is preferably carried out by a client software process configured in accordance with embodiments of the invention. Using this technique, a client can generate set of objects and provide those objects to a server and receive a global object specification in response that corresponds to the original set of objects. Each object is then guaranteed to be uniquely identified on both the client and the server as well as on any other clients which may access the objects thereafter.
In another related embodiment of the invention, the step of providing the local object specification to the server includes the steps of reserving an object creation right with the server and in response to reserving the object creation right with the server, defining the local object specification to include at least one local object definition and a corresponding local object identification that is unique to the at least one local object on the client. The method then transfers the local object specification to the server. By reserving an object creation right with the server, the method allows a client to reserve the server for the process of creating uniquely identified objects according to this invention.
In another embodiment, the step of reserving an object creation right with the server includes the step of checking for an existence of an object specification on the server, and if no object specification exists on the server, creating a reservation object specification on the server in order to reserve the object creation right with the server on behalf of the client, and if an object specification exists on the server, receiving a denial of the object creation right for the client. The reservation object specification operates as a placeholder on behalf of the client placing such an object on the server in order to reserve the server to attend to the processing tasks of this invention which create a unique set of global objects.
In another embodiment, the step of generating a signal indicating whether the global object specification and the local object specification define common object definitions includes the step of checking whether the global object specification contains a corresponding global object definition for each respective local object defined in the local object specification. If the global object specification contains a corresponding global object definition for each respective local object defined in the local object specification, then the method replaces the local object specification in the client with the global object specification received from the server. If the global object specification does not contain a corresponding global object definition for each respective local object defined in the local object specification, then the method provides an indication of an error to the server.
In a further embodiment, the signal indicates that the global object specification and the local object specification define common object definitions. In this embodiment, the method further comprises the step of, in response to the signal indicating that the global object specification and the local object specification define common object definitions, providing a confirmation of acceptance of the global object specification to the server to indicate to the server to send an update to other clients such that the other clients can create objects in conjunction with the server and releasing the object creation right with the server. Thus, once a client uses the techniques of the invention in conjunction with a server to generate a global object specification containing a set of unique global object definitions, the client can indicate acceptance of these unique global object to the server which can then allow other clients to obtain the same set of global object definitions in the global object specification. If the invention is implemented, for example, in a collaboration software system, this allows client collaboration software processes to obtain the set of shared global object definitions which are each uniquely identified across all clients and the server.
In still another embodiment, the step of releasing the object creation right with the server comprises the step of providing an indication to the server to delete a reservation object specification on the server that reserve the object creation right with the server on behalf of the client. Thus once a client accepts the global object specification, the client can release the server so that the server can process object requests on behalf of other clients.
In another embodiment, the step of receiving the global object specification receives a global object specification containing global object definitions that correspond to respective local object definitions in the local object specification. The global object definitions have respective global object identifications that are unique amongst all global object definitions created by the server. Accordingly, a client does not need to be concerned than object my contained in object identification that is duplicated elsewhere such as on the server or on another client.
In a further embodiment, the client is client collaboration software performing on a client computer system involved in a collaboration session with the server and the server is collaboration adapter software operating on a collaboration computer system. In this embodiment, the method further comprises the step of, in response to determining that the server properly created the global object specification, providing confirmation of acceptance of the global object specification to the server such that the server can update the global object specification of other client computer systems performing client collaboration software such that all clients involved in the collaboration session with the server contain the global object definitions having unique global object identifications.
Other embodiments of the invention relate to object processing that takes place by a server software process executing in conjunction with a processor on a server computer system. One such embodiment provides a method for defining objects. The method comprises the steps of receiving a local object specification from a client. Then, for each local object definition in the local object specification, defining, within a global object specification, a corresponding global object definition including a unique global object identification, and then providing the global object specification to the client. In this manner, a server performing this method can generate a global object specification based on a local object specification provided to the server from a client, in the global object specification with contain global object definitions which are each uniquely identified.
In another related embodiment, the step of defining, within a global object specification, a corresponding global object definition including a unique global object identification comprises the steps of creating a global object definition that contains object properties equivalent to object properties of the local object definition to which the global object definition corresponds, generating an object identification for the unique global object identification that is unique amongst all global object identifications assigned to any existing global object definitions known to the server, and then assigning the unique global object identification to the global object definition such that the global object definition is uniquely identified amongst all global object definitions. Using this technique, a server is able to produce global object definitions which are each uniquely identified across all clients as well as within the server.
In a further embodiment, the step of creating a global object definition that contains object properties equivalent to object properties of the local object definition to which the global object definition corresponds comprises the step of copying the local object definition in the local object specification to a global object definition within the global object specification to generate the global object definition which is a copy of the local object definition. Also in this embodiment, the step of assigning the unique global object identification to the global object definition replaces the local object identification copied to the global object definition with the unique global object identification generated by the step of generating an object identification for the unique global object identification.
In still another embodiment, the method includes the step of associating the global object definition to the global object specification. In this manner, the server can duplicate local object definitions and can replace local object identifications in those definitions with a global object identification which is assured to the uniquely identifiable.
Another embodiment includes the steps of receiving, from a client, a request to reserve an object creation right on the server, and checking if the client is able to create an object on the server. If the client is able to create an object on the server, the method returns an object creation right to the client, and if the client is not able to create an object on the server, the method provides a denial of the object creation right to the client.
In another embodiment, the step of receiving, from a client, a request to reserve an object creation right on the server comprises the step of receiving an attempt to create a reservation object specification from the client in order to reserve the object creation right with the server on behalf of the client. If the step of checking if the client is able to create an object on the server determines that the client is able to create an object in the server, the method further includes the step of creating a reservation object specification on the server in order to reserve the object creation right with the server on behalf of the client. Using this technique, a client can reserve the server for interaction with that client during the process of creating a global object specification.
Still another embodiment of the invention includes the steps of, in response to returning the object creation right to the client, receiving, from a client, a reservation object specification on the server that reserves the object creation right on behalf of the client and creating the reservation object specification on the server in order to reserve the object creation right with the server on behalf of the client.
In still another embodiment, the method includes the steps of receiving a confirmation of acceptance of the global object specification provided to the client and providing a global object specification update to other clients such that the other clients can retrieve the global object specification from the server. In this manner, when the server receives confirmation from the client that the global object specification is acceptable, the server can provide an indication to other clients to update their object specifications with the new global object specification.
In still another embodiment the method includes the steps of receiving a request from the other clients for the global object specification and in response to receiving the request from the other clients for the global object specification, providing the global object specification to the other clients. When a server of the invention performs this method embodiment, other clients can request a global object specification update from the server in the server will provide all clients with the latest version of the global object specification.
Another embodiment of the invention provides a method for defining shared objects on a client and a server. This method embodiment comprising the steps of providing, from the client, a local object specification to the server and receiving, in the server, the local object specification from the client. In the server, for each local object definition in the local object specification, the method defines, within a global object specification, a corresponding global object definition including a unique global object identification. The method then provides, from the server, the global object specification to the client and receives, at the client, the global object specification from the server. The method then compares, in the client, the global object specification to the local object specification to determine that the server properly created the global object specification based upon the local object specification. If the server properly created the global object specification, the method replaces the local object specification in the client with the global object specification received from the server. If the server improperly created a global object specification, the method provides, from the client, an indication of an error to the server.
Other embodiments of the invention include, in a client computer system, a method for performing object operations. The object operations may include deleting or creating global object definitions from existing global object specification. One such method comprises the steps of providing an object operation to a server from a client performing on the client computer system and receiving, at the client, a global object specification update from the server. The global object specification update indicates that the server performed the object operation on a global object specification maintained by the server. In response to receiving the global object specification update, the method performs the object operation on a global object specification maintained by the client.
Using this technique, once a client is in possession of a global object specification, the client can perform object operations such as creating or deleting an object definition in the global object specification by first instructing the server to perform such object operations and then, upon receiving confirmation from the server that such object operations have been performed on the global object specification maintained within the server, the client can perform a corresponding object operation on a global object specification maintained by that client. This ensures that a client will not first perform an object operation on its global object specification while then having the server fail to perform such an operation. In other words, this technique guarantees that the server will carry on object operation before all clients, for example, that are involved the collaboration session carry out a corresponding object operation.
In another embodiment, the object operation is a create object operation and the step of providing the object operation to a server comprises the steps of defining at least one object property for a global object definition to be created by the server and providing the object operation to the server including the one object property. The object property may specify, for example, a particular type of object that the server is to create. Also in this method, the step of receiving receives the global object specification update containing a new global object identification for a new global object definition to be created in the global object specification in the client computer system. The new global object identification is a global object identification assigned by the server to the new object definition which the server creates in the global object specification maintained by the server. This new object definition contains the object property specify to the server by the client in the object operation. Also in this method, the step of performing the object operation on a global object specification maintained by the client includes the step of generating the global object definition within the global object specification on the client computer system. The global object definition contains the object property and contains the global object identification received from the global object specification update. In this manner, the client creates an object definition containing the object property as well as the global object identification provided from the server, after confirmation that the server created the same object definition in its global object specification.
In another embodiment, the object operation is a delete object operation and the step of providing the object operation to a server comprises the steps of defining at least one object property for a global object definition to be deleted from a global object specification maintained by the server and providing the object operation to the server including the object property. Also in this method, the step of receiving receives the global object specification update containing a global object identification of an existing global object definition in the global object specification in the client computer system. Also, the step of performing the object operation on a global object specification maintained by the client includes the step of removing a global object definition within the global object specification that corresponds to the global object identification received from the global object specification update.
Other embodiments of the invention include client computer systems configured to perform all of the method embodiments summarized above with respect to client processing and explained herein as the invention. In particular, such client computer system embodiments include an interface, a processor, a memory system and an interconnection mechanism coupling the interface, the processor and the memory system. The memory system is encoded with an client object manager process that, when performed on the processor, operates as a client to cause the client computer system to define shared objects by performing the operations of the client method embodiments of the invention. That is, the invention includes client computer systems configured to perform all of the method operations of the client embodiments disclosed herein.
Other embodiments of the invention include server computer systems configured to perform all of the method embodiments summarized above with respect to server processing and explained herein as the invention. In particular, such server computer system embodiments include an interface, a processor, a memory system and an interconnection mechanism coupling the interface, the processor and the memory system. The memory system is encoded with an server object manager process that, when performed on the processor, operates as a server to cause the server computer system to define shared objects by performing the operations of the server method embodiments of the invention. That is, the invention includes server computer systems configured to perform all of the method operations of the server embodiments disclosed herein.
Generally, embodiments of the invention can perform all of the client and server methods disclosed herein via software control, or via hardware and/or software configured to perform those methods and the techniques.
Other embodiments of the invention that are disclosed herein include software programs to perform the client and server operations summarized above and disclosed in detail below. More particularly, a computer program product is disclosed which has a computer-readable medium including computer program logic encoded thereon to provide the methods for defining shared objects according to this invention. The computer program logic, when executed on at least one processor within a client or server computing system, causes the processor to perform the operations (e.g., the client and server method embodiments above, and described in detail later) indicated herein. This arrangement of the invention may be provided as software on a computer readable medium such as an optical medium (e.g., CD-ROM), floppy or hard disk or other such medium such as firmware in one or more ROM or RAM or PROM chips or as an Application Specific Integrated Circuit (ASIC). The software, firmware or other such configurations can be installed onto a computer system to cause the computer system to perform the techniques explained herein as the invention.
It is to be understood that the system of the invention can be embodied strictly as a software program, as software and hardware, or as hardware alone. Is also to be understood that the object processing techniques and mechanisms of this invention typically perform (e.g., execute, run, or are otherwise operated) on and between client and server computer systems coupled to a computer network.
The invention may be embodied in systems, software and/or hardware products designed, developed and/or manufactured by Cisco Systems, Inc. of San Jose, Calif.